home *** CD-ROM | disk | FTP | other *** search
/ Libris Britannia 4 / science library(b).zip / science library(b) / PROGRAMM / PASCAL / 0920.ZIP / STRING.ARC / STRTEST.PAS < prev   
Pascal/Delphi Source File  |  1987-12-26  |  6KB  |  215 lines

  1. PROGRAM test;
  2.  
  3. {This is a test program for the additional string functions implemented in
  4.  the UNIT strings.
  5.  
  6.  ExtractForCount
  7.  
  8.    Declaration
  9.        target_str := ExtractForCount(source_string, sizeof(target_string, start_pos)
  10.  
  11.    Operation
  12.        This FUNCTION will move 'n' characters from the source string into the
  13.        target string starting from the character in the source string pointed
  14.        to by start_pos). Once the characters have been moved into the target
  15.        string they are deleted from the source string.
  16.  
  17.   ExtractToChar
  18.  
  19.    Declaration
  20.        target_str := ExtractToChar(source_str, sizeof(target_str), search_char)
  21.  
  22.    Operation
  23.        This FUNCTION will move characters from the source string into the target
  24.        string UNTIL the a character matching search_char is encountered. When
  25.        the search_char is matched character movement stops (movement does not
  26.        include the search_char). The characters that were moved are deleted
  27.        from the source string.
  28.  
  29.   Translate
  30.  
  31.     Declaration
  32.        Translate(str_to_translate, translate_table);
  33.  
  34.     Operation
  35.        This PROCEDURE will translate the string indicated by str_to_translate
  36.        according to the 256 character translation table specified by the
  37.        second operand. The translation table is assumed to be 256 bytes in
  38.        length and must be setup by the caller.
  39.  
  40.        For each byte in the str_to_translate, the character is extracted and
  41.        it's logical value is added to the starting address of the translation
  42.        table. The table character pointed by that sum is used to replace the
  43.        original character.
  44.  
  45.   PadLeft
  46.  
  47.     Declaration
  48.        PadLeft(string, sizeof(string), new_length, pad_char);
  49.  
  50.     Operation
  51.        This PROCEDURE will insert pad_char into the 1st position of string
  52.        until the length of string is equal to new_length or the string
  53.        reaches it's maximum size.
  54.  
  55.  
  56.   PadRight
  57.  
  58.     Declaration
  59.        PadRight(string, sizeof(string), new_length, pad_char);
  60.  
  61.     Operation
  62.        This PROCEDURE will insert pad_char into the LAST position of string
  63.        until the length of string is equal to new_length or the string
  64.        reaches it's maximum size.
  65.  
  66.   Uppercase
  67.  
  68.     Declaration
  69.        target_str := Uppercase (source_str);
  70.  
  71.     Operation
  72.        This FUNCTION will convert each character within the range of a..z in
  73.        the source_string into it's corresponding uppercase character and place
  74.        it into the target_string.
  75.  
  76.   StringOf
  77.  
  78.     Declaration
  79.        target_str := StringOf (pad_char, string_len);
  80.  
  81.     Operation
  82.        This FUNCTION will create a string containing string_len occurances of
  83.        pad_char. The original contents of the string are ignored and the user
  84.        is assumed to know what he/she is doing as there is no check for excedding
  85.        the maximum length of the string.
  86.                                                                             }
  87.  
  88.  
  89.  
  90.  
  91. uses strings,
  92.      crt;
  93.  
  94.  
  95.  
  96. VAR
  97.   str0     : STRING[20];
  98.   v1       : STRING[20];
  99.   str1     : STRING[20];
  100.   v2       : STRING[20];
  101.   str2     : STRING[20];
  102.   v3       : STRING[20];
  103.   str3     : STRING[20];
  104.   v4       : STRING[20];
  105.   table    : STRING[255];
  106.   i        : integer;
  107.  
  108.  
  109.  
  110. BEGIN
  111.   v1 := '12345678901234567890';
  112.   v2 := v1;
  113.   v3 := v1;
  114.   v4 := v1;
  115.   str1 := 'this is STRING 1';
  116.   str2 := '*';
  117.   str3 := 'this is STRING 3';
  118.   WRITELN;
  119.   WRITELN('Testing PadLeft............');
  120.   WRITELN;
  121.   REPEAT
  122.     padleft(str2,sizeof(str2),(length(str2)+1),' ');
  123.     IF (v2 <> '12345678901234567890') OR
  124.        (v3 <> '12345678901234567890') THEN BEGIN
  125.        WRITELN('Error: boundary validation failed');
  126.        HALT;
  127.     END;
  128.     WRITELN('l str2 = ',length(str2):2,'  str2 = [',str2,']');
  129.   UNTIL length(str2) = 20;
  130.   DELAY(3000);
  131.  
  132.  
  133.   WRITELN;
  134.   WRITELN('Testing ExtractForCount.......');
  135.   WRITELN;
  136.   REPEAT
  137.     str3 := ExtractForCount(str2,sizeof(str3),1);
  138.     IF (v2 <> '12345678901234567890') OR
  139.        (v3 <> '12345678901234567890') THEN BEGIN
  140.        WRITELN('Error: boundary validation failed');
  141.        HALT;
  142.     END;
  143.     IF (v3 <> '12345678901234567890') OR
  144.        (v4 <> '12345678901234567890') THEN BEGIN
  145.        WRITELN('Error: boundary validation failed');
  146.        HALT;
  147.     END;
  148.     WRITE('l str3 = ',length(str3):2,'   str3 = [',str3,']');
  149.     WRITELN('l str2 = ',length(str2):2,'   str2 = [',str2,']');
  150.   UNTIL length(str2) = 0;
  151.   DELAY(3000);
  152.  
  153.  
  154.   WRITELN;
  155.   WRITELN('Testing ExtractForCount.......');
  156.   WRITELN;
  157.   str2 := '*';
  158.   padleft(str2,sizeof(str2),20,' ');
  159.   str3 := ExtractForCount(str2,sizeof(str3),25);
  160.   IF (v3 <> '12345678901234567890') OR
  161.      (v4 <> '12345678901234567890') THEN BEGIN
  162.      WRITELN('Error: boundary validation failed');
  163.      HALT;
  164.   END;
  165.   WRITE('l str3 = ',length(str3):2,'   str3 = [',str3,']');
  166.   WRITELN('l str2 = ',length(str2):2,'   str2 = [',str2,']');
  167.   DELAY(3000);
  168.  
  169.  
  170.   str2 := '1 2 3 4 5 6 7 8 9';
  171.   WRITELN;
  172.   WRITELN('Testing ExtractToChar.....');
  173.   WRITELN;
  174.   REPEAT
  175.     str3 := ExtractToChar(str2,sizeof(str3),' ');
  176.     delete(str2,1,1);
  177.     IF (v3 <> '12345678901234567890') OR
  178.        (v4 <> '12345678901234567890') THEN BEGIN
  179.        WRITELN('Error: boundary validation failed');
  180.        HALT;
  181.     END;
  182.     WRITE('l str3 = ',length(str3):2,'   str3 = [',str3,']');
  183.     WRITELN('l str2 = ',length(str2):2,'   str2 = [',str2,']');
  184.   UNTIL length(str3) = 0;
  185.   DELAY(3000);
  186.  
  187.  
  188.   str2 := '!';
  189.   WRITELN;
  190.   WRITELN('Testing PadRight......');
  191.   WRITELN;
  192.   REPEAT
  193.     padright(str2,sizeof(str2),(length(str2)+1),'*');
  194.     IF (v2 <> '12345678901234567890') OR
  195.        (v3 <> '12345678901234567890') THEN BEGIN
  196.        WRITELN('Error: boundary validation failed');
  197.        HALT;
  198.     END;
  199.     WRITELN('l str2 = ',length(str2):2,'   str2 = [',str2,']');
  200.   UNTIL length(str2) = 15;
  201.   DELAY(3000);
  202.  
  203.  
  204.   FOR i := 0 to 255 DO
  205.     table[i] := CHR(ORD(i));
  206.   str0 := '..../....1..../....2';
  207.   table[ORD('.')] := ' ';
  208.   WRITELN;
  209.   WRITELN('Testing Translate.....');
  210.   WRITELN;
  211.   WRITELN('Original STRING   = ',str0);
  212.   translate(str0, table);
  213.   WRITELN('Translated STRING = ',str0);
  214. end.
  215.